#include "../include/test.h"

list *load(void) // 加载数据
{
    list *plist = NULL;
    int fd = 0; // 文件描述符


    plist = (list *)malloc(sizeof(list));
    if(plist == NULL){
        perror("malloc");
        return NULL;
    }
    memset(plist, 0, sizeof(list));

    fd = open("./data/data.txt", O_RDONLY); // 以只读方式打开文件
    if(fd != -1){ // 文件存在
        read(fd, plist, sizeof(list)); // 读取文件

        plist->data = (data_type *)malloc(sizeof(data_type) * plist->size); // 分配内存
        if(plist->data == NULL){
            perror("malloc");
            return NULL;
        }

        read(fd, plist->data, sizeof(data_type) * plist->size); // 读取文件
        close(fd); // 关闭文件
        printf("加载成功！\n");
        return plist;
    }

    return NULL;
}

int save(list *plist) // 保存
{
    if(plist == NULL){ // 表不存在
        return LIST_NOT_EXIST;
    }

    int fd = 0; // 文件描述符
    fd = open("./data/data.txt", O_WRONLY | O_CREAT | O_TRUNC, 0664); // 以写模式打开文件
    if(fd < 0){ // 打开失败
        perror("open");
        return OK;
    }

    write(fd, plist, sizeof(list)); // 写入表
    write(fd, plist->data, sizeof(data_type) * plist->size); // 写入数据
    close(fd);
    printf("保存成功\n");
    return OK;
}

